package com.heima.wemedia;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;

import javax.annotation.PostConstruct;

/**
 * <p>
 * 使用 {@code @EnableFeignClients("com.heima.apis")} 指定启用的 Feign 客户端包路径。
 * 若不指定，默认扫描当前包（{@code com.heima.wemedia}）下的 Feign 客户端，
 * 因此需要显式指定 {@code basePackages} 以正确扫描 Feign 接口。
 * </p>
 *
 * <p>
 * 关键注解说明：
 * <ul>
 *   <li>
 *     {@code @EnableDiscoveryClient} - 注册服务到 Nacos/Eureka，并支持服务发现。<br>
 *     依赖关系：Feign 依赖此注解（需要先有服务发现才能进行远程调用）。
 *   </li>
 *   <li>
 *     {@code @EnableFeignClients} - 启用 Feign 客户端，生成远程调用的动态代理类。<br>
 *     依赖关系：必须搭配 {@code @EnableDiscoveryClient}（否则无法发现目标服务）。
 *   </li>
 * </ul>
 * </p>
 */
@SpringBootApplication
@EnableDiscoveryClient
@MapperScan("com.heima.wemedia.mapper")
@EnableFeignClients(basePackages = "com.heima.apis")
@EnableAsync // 启用异步任务
@EnableScheduling // 开启定时任务
public class WemediaApplication {
    public static void main(String[] args) {
        SpringApplication.run(WemediaApplication.class,args);
    }
}
